/*
  平面上点对之间的最大距离
  题目描述
    给定平面上 n 个点，找出其中的一对点的距离，使得在这 n 个点的所有点对中，该距离为所有点对中最小的。
  输入描述
    第一行一个整数 n，表示点的个数。
    接下来 n 行，每行两个整数 x、y，表示一个点的横坐标和纵坐标。
  输出描述
    仅一行，一个实数，表示点对中最短的距离，四舍五入保留 4 位小数。
  样例1
    输入
      3
      1 1
      1 2
      2 2
    输出
      1.0000
  提示
    对于 100% 的数据，保证 1 <= n <= 10^4, 0<= x, y <= 10^9。
*/

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

struct node {
    int x;
    int y;
} a[10005];

long long minn = 1e18;

int main() {
    int n;

    cin >> n;
    for (long long i = 1; i <= n; i++) {
        cin >> a[i].x >> a[i].y;
    }

    for (long long i = 1; i <= n; i++) {
        for(long long j = i + 1; j <= n; j++) {
            /*
              对于直角三角形 △ABC,
              假设 ∠ABC = 90°, 直角边 AB 的长度为 x, 直角边 BC 的长度为 y, 斜边 AC 的长度为 z,
              那么 x² + y² = z²
            */
            long long s1 = pow(a[i].x - a[j].x, 2); // 说明: pow(x, y) 函数返回值为 x 的 y 次方
            long long s2 = pow(a[i].y - a[j].y, 2);

            if (s1 + s2 < minn) {
                minn = s1 + s2;
            }
        }
    }

    // 说明: sqrt(minn) 函数用于求 minn 的平方根
    cout << fixed << setprecision(4) << sqrt(minn);

    return 0;
}